namespace EyeOpen.Domain
{
	using System;

	public abstract class Aggregate<T>
		: IAggregate
		where T : IComparable<T>
	{
		public virtual T Id { get; set; }

		IComparable IAggregate.Id
		{
			get
			{
				return (IComparable)Id;
			}

			set
			{
				Id = (T)value;
			}
		}
	}
}